Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Java Data Objects</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Java_Data_Objects"> <link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Java_Data_Objects rootpage-Java_Data_Objects skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Java Data Objects</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */


.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style>
<p><b>Java Data Objects</b> (<b>JDO</b>) is a specification of <a href="Java_platform" class="mw-redirect" title="Java platform">Java</a> <a href="Object_(computer_science)" title="Object (computer science)">object</a> <a href="Persistence_(computer_science)" title="Persistence (computer science)">persistence</a>. One of its features is a transparency of the persistence services to the <a href="Domain_model" title="Domain model">domain model</a>. JDO persistent objects are ordinary <a href="Java_(programming_language)" title="Java (programming language)">Java programming language</a> <a href="Class_(computer_science)" class="mw-redirect" title="Class (computer science)">classes</a> (<a href="Plain_old_Java_object" title="Plain old Java object">POJOs</a>); there is no requirement for them to implement certain <a href="Interface_(Java)" title="Interface (Java)">interfaces</a> or extend from special classes. JDO 1.0 was developed under the <a href="Java_Community_Process" title="Java Community Process">Java Community Process</a> as <a rel="nofollow" class="external text" href="http://www.jcp.org/en/jsr/detail?id=12">JSR 12</a>. JDO 2.0 was developed under <a rel="nofollow" class="external text" href="http://www.jcp.org/en/jsr/detail?id=243">JSR 243</a> and was released on May 10, 2006. JDO 2.1 was completed in Feb 2008, developed by the <a rel="nofollow" class="external text" href="https://db.apache.org/jdo/">Apache JDO</a> project. JDO 2.2 was released in October 2008. JDO 3.0 was released in April 2010.
</p><p>Object persistence is defined in the external <a href="XML" title="XML">XML</a> metafiles, which may have vendor-specific extensions. JDO vendors provide developers with <i>enhancers</i>, which modify compiled Java class files so they can be transparently persisted. (Note that byte-code enhancement is not mandated by the JDO specification, although it is the commonly used mechanism for implementing the JDO specification's requirements.) Currently, JDO vendors offer several options for persistence, e.g. to <a href="Relational_database" title="Relational database">RDBMS</a>, to <a href="Object_database" title="Object database">OODB</a>, or to <a href="Computer_file" title="Computer file">files</a>.
</p><p>JDO enhanced classes are portable across different vendors' implementation. Once enhanced, a Java class can be used with any vendor's JDO product.
</p><p>JDO is integrated with <a href="Java_Platform%2C_Enterprise_Edition" class="mw-redirect" title="Java Platform, Enterprise Edition">Java EE</a> in several ways. First of all, the vendor implementation may be provided as a <span class="clarify-content" style="padding-left:0.1em; padding-right:0.1em; color:var(--color-subtle, #54595d); border:1px solid var(--border-color-subtle, #c8ccd1);">JEE Connector</span>. Secondly, JDO may work in the context of JEE <a href="Java_transaction_service" title="Java transaction service">transaction services</a>.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="JDO_vs._EJB3_vs._JPA">JDO vs. EJB3 vs. JPA</h2></div>
<p><a href="Enterprise_JavaBeans" class="mw-redirect" title="Enterprise JavaBeans">Enterprise JavaBeans</a> 3.0 (EJB3) specification also covered persistence, as had EJB v2 with <a href="Entity_Bean" title="Entity Bean">Entity Beans</a>. There have been standards conflicts between the two standards bodies in terms of pre-eminence. JDO has several commercial implementations.
</p><p>In the end, persistence has been "broken out" of "EJB3 Core", and a new standard formed, the <a href="Java_Persistence_API" class="mw-redirect" title="Java Persistence API">Java Persistence API</a> (JPA). JPA uses the <code>javax.persistence</code> package, and was first specified in a separate document within the EJB3 spec <a rel="nofollow" class="external text" href="http://www.jcp.org/en/jsr/detail?id=220">JSR 220</a>, but was later moved to its own spec <a rel="nofollow" class="external text" href="http://www.jcp.org/en/jsr/detail?id=317">JSR 317</a>. Significantly, <code>javax.persistence</code> will <b>not</b> require an EJB container, and thus will work within a Java SE environment as well, as JDO always has. JPA, however, is an <a href="Object-relational_mapping" class="mw-redirect" title="Object-relational mapping">object-relational mapping</a> (ORM) standard, while JDO is both an object-relational mapping standard and a transparent object persistence standard. JDO, from an API point of view, is agnostic to the technology of the underlying datastore, whereas JPA is targeted to RDBMS datastores (although there are several JPA providers that support access to non-relational datastores through the JPA API, such as DataNucleus and ObjectDB).
</p><p>Leading JDO commercial implementations and open source projects also offer a JPA API implementation as an alternative access to their underlying persistence engines, formerly exposed solely via JDO in the original products. There are many open source implementations of JDO.
</p>
<div class="mw-heading mw-heading2"><h2 id="New_Features_in_JDO_Version_2_Not_Found_In_Version_1">New Features in JDO Version 2 Not Found In Version 1</h2></div>
<ul><li>Disconnected object graphs concept</li>
<li>Standardized ORM mapping descriptors (for ORM-based JDO implementations)</li>
<li>JDOQL Enhancements (Single String Form; more String, Map &amp; Math methods support mandated)</li>
<li>Get e.g. a <code><a rel="nofollow" class="external text" href="https://docs.oracle.com/en/java/javase/24/docs/api/java.sql/java/sql/Connection.html">Connection</a></code> from <code>javax.jdo.PersistenceManager</code></li>
<li>More: Named Queries (pm.newNamedQuery), FetchPlan, Sequence, Delete by Query, multiple User Objects on PM</li></ul>
<div class="mw-heading mw-heading2"><h2 id="JDO_Reference_Implementations">JDO Reference Implementations</h2></div>
<ul><li>JDO 1.0&nbsp;: FOStore</li>
<li>JDO 2.0&nbsp;: <a href="DataNucleus" title="DataNucleus">JPOX</a> 1.1</li>
<li>JDO 2.1&nbsp;: JPOX 1.2</li>
<li>JDO 2.2&nbsp;: <a href="DataNucleus" title="DataNucleus">DataNucleus</a> AccessPlatform 1.0.1</li>
<li>JDO 3.0&nbsp;: <a href="DataNucleus" title="DataNucleus">DataNucleus</a> AccessPlatform 2.1.0</li>
<li>JDO 3.1&nbsp;: <a href="DataNucleus" title="DataNucleus">DataNucleus</a> AccessPlatform 3.2.0</li>
<li>JDO 3.2&nbsp;: <a href="DataNucleus" title="DataNucleus">DataNucleus</a> AccessPlatform 5.2.0</li></ul>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Object-relational_mapping" class="mw-redirect" title="Object-relational mapping">Object-relational mapping</a></li>
<li><a href="Object_database" title="Object database">Object database</a></li>
<li><a href="Java_Persistence_API" class="mw-redirect" title="Java Persistence API">Java Persistence API</a> (JPA)</li>
<li><a href="DataNucleus" title="DataNucleus">DataNucleus</a></li>
<li><a href="ObjectDB" title="ObjectDB">ObjectDB</a></li>
<li>ActiveJPA</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Bibliography">Bibliography</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239549316">
/* start https://en.wikipedia.org/ */


.mw-parser-output .refbegin{margin-bottom:0.5em}.mw-parser-output .refbegin-hanging-indents>ul{margin-left:0}.mw-parser-output .refbegin-hanging-indents>ul>li{margin-left:0;padding-left:3.2em;text-indent:-3.2em}.mw-parser-output .refbegin-hanging-indents ul,.mw-parser-output .refbegin-hanging-indents ul li{list-style:none}@media(max-width:720px){.mw-parser-output .refbegin-hanging-indents>ul>li{padding-left:1.6em;text-indent:-1.6em}}.mw-parser-output .refbegin-columns{margin-top:0.3em}.mw-parser-output .refbegin-columns ul{margin-top:0}.mw-parser-output .refbegin-columns li{page-break-inside:avoid;break-inside:avoid-column}@media screen{.mw-parser-output .refbegin{font-size:90%}}


/* end https://en.wikipedia.org/ */
</style><div class="refbegin" style="">
<ul><li><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFJordanRussell2003" class="citation book cs1">Jordan, David; Russell, Craig (April 22, 2003). <a rel="nofollow" class="external text" href="http://oreilly.com/catalog/9780596002763"><i>Java Data Objects</i></a> (1st&nbsp;ed.). <a href="O'Reilly_Media" title="O'Reilly Media">O'Reilly Media</a>. p.&nbsp;384. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>0-596-00276-9</bdi>.</cite></li>
<li><cite id="CITEREFTyagiVorburgerMcCammonBobzin2003" class="citation book cs1">Tyagi, Sameer; Vorburger, Michael; McCammon, Keiron; Bobzin, Heiko (September 21, 2003). <a rel="nofollow" class="external text" href="http://www.informit.com/store/product.aspx?isbn=0131407317"><i>Core Java Data Objects</i></a> (1st&nbsp;ed.). <a href="Prentice_Hall" title="Prentice Hall">Prentice Hall</a>. p.&nbsp;576. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>0-13-140731-7</bdi>.</cite></li>
<li><cite id="CITEREFEzzio2003" class="citation book cs1">Ezzio, David (June 6, 2003). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20101223171047/http://apress.com/book/view/9781590590430"><i>Using and Understanding Java Data Objects</i></a> (1st&nbsp;ed.). <a href="Apress" class="mw-redirect" title="Apress">Apress</a>. p.&nbsp;456. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>1-59059-043-0</bdi>. Archived from <a rel="nofollow" class="external text" href="http://www.apress.com/book/view/9781590590430">the original</a> on December 23, 2010<span class="reference-accessdate">. Retrieved <span class="nowrap">February 8,</span> 2010</span>.</cite></li></ul>
</div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.jcp.org/en/jsr/detail?id=12">JDO 1.0 specification</a></li>
<li><a rel="nofollow" class="external text" href="http://www.jcp.org/en/jsr/detail?id=243">JDO 2.0 specification</a></li>
<li><a rel="nofollow" class="external text" href="https://db.apache.org/jdo/specifications.html">JDO 2.1 specification</a></li>
<li><a rel="nofollow" class="external text" href="https://db.apache.org/jdo/specifications.html">JDO 2.2 specification</a></li>
<li><a rel="nofollow" class="external text" href="https://db.apache.org/jdo/specifications.html">JDO 3.0 specification</a></li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" ยท ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox authority-control" aria-label="Navbox390" style="padding:3px"><table class="nowraplinks hlist navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Authority control databases: National </th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://d-nb.info/gnd/4737673-9">Germany</a></span></li></ul></div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2023-10-30" href="https://en.wikipedia.org/wiki/?title=Java_Data_Objects&amp;oldid=1182594466">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>